package org.zjx.data;

import lombok.Getter;
import org.zjx.command.entity.screen.Npc;

@Getter
public class GameSystem {
    private FileBasedWorldManager worldManager;

    private static GameSystem instance;
    private GameSystem() {
        init(false);
    }
    public static synchronized GameSystem getInstance() {
        if (instance == null) {
            instance = new GameSystem();
        }
        return instance;
    }

    public void init(boolean useJsonFiles) {
        // 场景文件目录
        String scenesDir = "config/scenes";
        worldManager = new FileBasedWorldManager(scenesDir);

        if (useJsonFiles) {
            // 从JSON文件加载
            worldManager.loadFromJsonFiles();
        } else {
            // 从Java代码加载（开发时）
            worldManager.loadFromBuilders();

            // 生成JSON文件（可选）
            worldManager.generateJsonFiles();
        }
    }

    // 开发时生成场景JSON模板
    public void generateSceneTemplates() {
        String scenesDir = "config/scenes";
        FileBasedWorldManager tempManager = new FileBasedWorldManager(scenesDir);
        tempManager.loadFromBuilders();
        tempManager.generateJsonFiles();
    }

    public static void main(String[] args) {
        GameSystem game = new GameSystem();

        // 开发阶段：从Java代码加载，并生成JSON
        game.init(false);

        // 或者直接生成JSON模板
        // game.generateSceneTemplates();

        // 生产环境：直接从JSON文件加载
        // game.init(true);

        // 使用示例
        Npc npc = game.worldManager.findNpc("长安城", "武器商");
        if (npc != null) {
            System.out.println("找到NPC: " + npc.name);
            System.out.println("功能: " + npc.functions);
        }
    }
}